# -*- coding:utf8 -*- #

# -----------------------------------------------------------------------------------

# ProjectName:   property-ui-auto-test

# FileName:     connect_db

# Author:      

# Datetime:    2022/5/2 16:08

# Description：

# -----------------------------------------------------------------------------------

from pymysql import Connect
from common.read.read_ini import Config

"""
建立连接：pymysql.connect()，数据库配置信息 和环境相关，可以配置在配置文件中
"""


class ConnectDB:
    def __init__(self):
        # 从配置文件中读取数据库环境相关信息
        self.user = Config().get_database_info("user")
        self.password = Config().get_database_info("password")
        self.host = Config().get_database_info("host")
        self.port = int(Config().get_database_info("port"))  # 端口号需要是整型
        self.database = Config().get_database_info("database")
        self.connect = Connect(user=self.user, password=self.password, host=self.host, port=self.port,
                               database=self.database)
        self.cursor = self.connect.cursor()  # 建立游标，通过游标执行SQL语句

    """ 
    根据 数据库的执行类型，来选择执行的SQL语句（类似于jmeter中的连接类型）
    select 语句的，需要返回值；
    delete 类型的，不需要返回值；
    """

    # 声明方法 执行DELETE语句
    def delete_data(self, sql):
        self.cursor.execute(sql)  # 传入需要执行的SQL语句
        self.connect.commit()  # 增、删、改都需要 提交

    # 声明方法 执行SELECT语句
    def select_data(self, sql):
        self.cursor.execute(sql)
        return self.cursor.fetchall()[0][0]  # 从游标中获取执行完成后的数据（元组中的key）

    # 声明方法 关闭数据库连接
    def close_db_connect(self):
        self.cursor.close()
        self.connect.close()

    # 声明方法执行SELECT语句(查询出多个数据)
    def select_data_more(self, sql):
        self.cursor.execute(sql)
        tup = self.cursor.fetchall()  # 针对批量删除，1次查询出多个数据
        list1 = []
        for i in tup:
            list1.append(i[0])
        return list1


if __name__ == '__main__':
    mysql = ConnectDB()
